Модуль:Factory
local p = {} local arrData = mw.loadData( 'Module:DataFactory' ) local crops = mw.loadData( 'Module:DataCrops' ) local animal = mw.loadData( 'Module:DataAnimal' ) local tree = mw.loadData( 'Module:DataTree' ) local materials = mw.loadData( 'Module:DataMaterials' ) --Карточка фабрики-- function p.Factory( frame ) local id = frame.args1 local text=' [[Файл:'..arrDataid.name..'.png|280px]] '.. ' Название: '..arrDataid.name..' '.. ' Тип: Фабрика '.. ' Цена: '..arrDataid.buy..' 15px c уровня '..arrDataid.level if arrDataid.buyagro~=0 then text=text..', '..arrDataid.buyagro..' 15px c уровня '..arrDataid.levelagro end text=text..' '.. ' Время производства продукции в минутах: '..arrDataid.tm..' '.. ' Количество ресурсов, загружаемых за 1 раз: '..arrDataid.c..' '.. ' Опыт за покупку фабрики: '..arrDataid.exper..' '.. ' Стоимость при удалении: '..arrDataid.del..' 15px '.. ' Локация: '..arrDataid.location..' '.. ' ' --Стройматериалы-- text=text..Factorybuild(id) --Производство-- text=text..Factoryres(id) --Улучшения в Торговом порту-- text=text..port(id) return text end --Улучшение в Порту-- function port(id) local text=' Улучшение в Торговом порту ' local ok, msg = pcall(function () if arrDataid.port nil then error() end end) if ok then text=text..' Фабрику можно улучшить в Торговом порту. ' else text=text..' Фабрику нельзя улучшить в Торговом порту. ' return text end text=text..' Что можно улучшить? Для одних фабрик можно уменьшить время производства товара, для других фабрик увеличить количество загружаемого сырья с 3 до 6. Всего можно улучшить 8 таких фабрик на локации. '.. ' '.. ' '.. ' Уровень '.. ' Цена 15px '.. ' Цена 15px '.. ' Количество ресурсов, загружаемых за 1 раз '.. ' Время производства продукции в минутах '.. ' ' local c,tm=arrDataid.c, arrDataid.tm local co for i,v in ipairs(arrDataid.port) do c=c+v.vol if v.tm~=0 then style1=' color:#088A08; font-size: 20px' tm=v.tm end text= text..' '.. ' '..v.level..' '.. ' '..v.buy..' '.. ' '..v.buy1..' ' if v.vol~=0 then text= text..' '..c..' ' else text= text..' '..tm..' ' tm=v.tm else text= text..' '..tm..' ' end text= text..' ' i=i+1 co=i-1 end text=text..' ' --Галерея из 3-5 фоток для порра-- text=text..require("Module:Gallery").Gallery(id,co) return text end --Стройматериалы-- function Factorybuild(id) local text=' Строительство ' local ok, msg = pcall(function () if arrDataid.materials nil then error() end end) if ok then text=text..' После покупки фабрику необходимо еще построить, для этого нужно будет купить материалы. ' else text=text..'Фабрика строится мгновенно, сразу же при покупке. Материалы для запуска фабрики не нужны.' return text end text=text..' '.. ' '.. ' '.. ' Материалы '.. ' Количество '.. ' Цена 15px '.. ' Стоимость 15px '.. ' ' local total=0 for i,v in ipairs(arrDataid.materials) do --Проверка на наличие материалов в модуле-- local ok, msg = pcall(function () if materialsv.name.buy nil then error() end end) if ok then text= text..' '.. ' 50px '.. ' '..v.name..' '.. ' '..v.c..' '.. ' '..materialsv.name.buy..' '.. ' '..materialsv.name.buy*v.c..' '.. ' ' total=total+materialsv.name.buy*v.c else text= text..' '.. ' '..v.name..' '.. ' '.. ' '.. ' ' end i=i+1 end text= text..' '.. ' Итого: '.. ' '.. ' '.. ' '.. ' '..total..' '.. ' ' text=text..' ' return text end --Добавляется основной ресурс-- function baseres(id) local text='' local buybase=0 --Наличие базового ресурса-- local ok, msg = pcall(function () if arrDataid.resourcebase nil then error() end end) if ok then text=text..' Для производства продукции на эту фабрику необходимо загружать два вида сырья: основное и сменяемое сырье. Основное сырье - сырье, которое требуется для производства каждой единицы продукции. Сменяемое сырье – сырье, которое меняется для производства каждого вида товара. ' else return text, 0 end text=text..' '.. ' '.. ' '.. ' Основное сырье '.. ' Цена 15px '.. ' ' for i,v in ipairs(arrDataid.resourcebase) do local ok, msg = pcall(function () if datav.name.name nil then error() end end) text=text..' ' if ok then text=text.. ' 50px '.. ' '..v.name..' '.. ' '..datav.name.buy..' ' buybase=buybase+datav.name.buy else text=text.. ' 50px '.. ' '..v.name..' '.. ' - ' end text=text..' ' end text=text..' ' return text, buybase end --Производимая продукция и ресурсы-- function Factoryres(id) --Составляем массив для столбца с ресурсами-- local data = {} --Преобразуем деревья-- for key,v in pairs(tree) do if v.nameprod '' then datakey={buy=v.sell,fab=key,name=v.name} else datav.nameprod={buy=v.sell,fab=key,name=v.nameprod} end end --Преобразуем животных-- for key,v in pairs(animal) do datav.nameprod={buy=v.sell,fab=v.nameprod,name=v.nameprod} end --Преобразуем продукцию фабрик-- for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do datav1.nameprod={buy=v1.sell,name=v1.nameprod,fab=key} end end --Добавлем семена-- for key,v in pairs(crops) do datav.name={buy=v.buy,name=v.name,fab=key} end local total=0 local text=' Производство '.. ' В следующей таблице находится список ресурсов, загружаемых на фабрику, а также список производимых товаров. ' --Добавляется основной ресурс-- local text2, buybase=baseres(id) text=text..text2..'buybase='..buybase --Добавляются столбцы с ресурсами- local text1='' for i,v in ipairs(arrDataid.resources) do local nameres1=v.nameres1 text1=text1..'' --Проверка на наличие ресурса в БД-- local ok, msg = pcall(function () if datanameres1.name nil then error() end end) if ok then text1=text1..'[[Файл:'..datanameres1.name..'.png|50px]]'.. '[['..datanameres1.fab..'|'..datanameres1.name..']]'.. ..datanameres1.buy.. else text1=text1..'50px'.. ..nameres1.... ' - ' end --Добавляются столбцы с продукцией- text1=text1.. '50px'.. ..v.nameprod.... ..v.sell.... '' if ok then text1=text1..(math.floor((v.sell-datanameres1.buy-buybase)*100)/100) else text1=text1..'-' end text1=text1..'' i=i+1 total=i-1 end text=text..' Открыть/закрыть таблицу '.. ' Всего: '..total..' '.. ' '.. ' '.. ' '.. ' Сырье '.. ' Цена 15px '.. ' '.. ' Продукция '.. ' Цена 15px '.. ' Доход 15px '.. ' '..text1..' ' return text end --Список фабрик на которых можно переработать продукт frame-- function p.fab(frame) local id='' if type(frame) 'string' then id=frame elseif type(frame) 'table' then id= frame.args1 end local text='' local text1='' local rb=false local arrData = mw.loadData( 'Module:DataFactory' ) for key,v in pairs(arrData) do text=' ' local ok, msg = pcall(function () if v.resourcebase nil then error() end end) if ok then for key1,v1 in pairs(v.resourcebase) do if v1.name id then text1=text1..' '..key..' ' rb=true break end end end if not rb then for key2,v2 in pairs(v.resources) do if v2.nameres1 id then text1=text1..' '..key..' ' break end end end text=text..text1..' ' end if text1~='' then text=' Продукт можно переработать на фабрике: '..text..' ' else text=' Продукт можно переработать на фабрике: Пока нет информации ' end return text end --Список продукции фабрик-- function p.product() local text=' ' product={} local j=1 for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do productj={} productj.fab=key productj.name=v1.nameprod j=j+1 end end table.sort(product,function( a, b ) return a.name < b.name end ) for i,v in ipairs(product) do if i 1 then text=text....string.sub (v.name, 1,2)..' ' else if string.sub (producti.name, 1,2)>string.sub (producti-1.name, 1,2) then text=text..' '....string.sub (v.name, 1,2)..' ' end end text=text..' '..v.name..' ' end text=text..' ' return text end return p